Combining bandwidth from multiple cellular connections into a single WLAN network

ABSTRACT

A computer-implemented method comprising: receiving an instruction to aggregate cellular bandwidth of a user device with the cellular bandwidth of one or more participating user devices; appending a shared character string to a network name of the user device based on receiving the instruction; scanning for wireless local area networks (WLANs) after appending the shared character string; identifying one or more WLAN networks with the network names having the shared character string, where the one or more WLAN networks are hosted by the one or more participating user devices; connecting to a particular WLAN network, of the one or more WLAN networks via a WLAN interface of the user device; combining bandwidth from the cellular interface of the user device with the bandwidth from the WLAN interface of the user device; and hosting a WLAN network providing a sum of the bandwidth from the WLAN interface and the cellular interface.

BACKGROUND

The present invention generally relates to bandwidth aggregation, andmore particularly, to bandwidth aggregation from multiple cellulardevices.

A user device can access a cellular network for connectivity to externalnetworks (e.g., the Internet). The cellular network establishes a bearerconnection with the user device, and provides the user device with acertain amount of network bandwidth. The amount of network bandwidth islimited by the bearer policies set by a service provider of the cellularnetwork. A user device may host a WiFi network (e.g. a WiFi “hotspot”)in which the cellular connection of the user device is shared withcompanion devices (e.g., another user device, such as a laptop, tabletdevice, etc.).

The bandwidth of the companion device is limited to the bandwidth of thecellular connection of the user device. A group users may need to usetheir companion devices to access an ad hoc WiFi hotspot with greaterthroughput than any of their cellular devices can provide individually.For example, a team of co-workers may need to connect their laptop PCsor tablets to a local WiFi network for collaborative work, and the teammay need that local WiFi network to have high speed Internet access tobe shared by all of the laptops and tablets. There currently is no knownapplication or algorithm that enables users to voluntarily andautomatically combine the wireless wide area broadband (e.g., cellphone) bandwidth of their individual devices into a single higher speedconnection to the Internet that can be made available for a WiFihotspot.

SUMMARY

In an aspect of the invention, a computer-implemented method includes:receiving, by a user device connected to a cellular network via acellular interface of the user device, an instruction to aggregatecellular bandwidth of the user device with the cellular bandwidth of oneor more participating user devices; appending, by the user device, ashared character string to a network name of the user device based onreceiving the instruction; scanning, by the user device, for wirelesslocal area networks (WLANs) after appending the shared character string;identifying, by the user device, one or more WLAN networks with thenetwork names having the shared character string, where the one or moreWLAN networks are hosted by the one or more participating user devices;connecting, by the user device, to a particular WLAN network, of the oneor more WLAN networks via a WLAN interface of the user device;combining, by the user device, bandwidth from the cellular interface ofthe user device with the bandwidth from the WLAN interface of the userdevice; and hosting, by the user device, a WLAN network providing a sumof the bandwidth from the WLAN interface and the cellular interface.

In another aspect of the invention, there is a computer program productfor aggregating bandwidth from a plurality of cellular connections. Thecomputer program product includes a computer readable storage mediumhaving program instructions embodied therewith. The program instructionsare executable by a user device to cause the user device to: receive aninstruction to aggregate cellular bandwidth of the user device with thecellular bandwidth of one or more participating user devices; append ashared character string to a network name of the user device based onreceiving the instruction; host a wireless local area network (WLAN)after appending the shared character string; disconnect devices from theWLAN except for a particular one of the one or more participating userdevices having a network name with the shared character string and acurrent sequence character string; scan for WLANs hosted by otherdevices; identify one or more WLAN networks hosted by the other deviceswith the network names having the shared character string; connect to aparticular WLAN network, of the one or more WLAN networks via a WLANinterface of the user device; and combine bandwidth from a cellularinterface of the user device with the bandwidth from the WLAN interfaceof the user device, where the WLAN hosted by the user device provides asum of the bandwidth from the WLAN interface and the cellular interface.

In another aspect of the invention, a system comprising: a user devicecomprising a CPU, a computer readable memory and a computer readablestorage medium associated with a computing device; program instructionsto receive an instruction to aggregate cellular bandwidth of the userdevice with the cellular bandwidth of a participating user device;program instructions to append a shared character string to a networkname of the user device based on receiving the instruction; programinstructions to scan for wireless local area networks (WLANs) afterappending the shared character string; program instructions to identifya WLAN hosted by the participating user device based on a network nameof the WLAN having the shared character string; program instructions toconnect to the WLAN network via a WLAN interface of the user device;program instructions to combine bandwidth from a cellular interface ofthe user device with bandwidth from the WLAN interface of the userdevice; and program instructions to host a WLAN network providing a sumof the bandwidth from the WLAN interface and the cellular interface,where the bandwidth from the WLAN interface includes the bandwidth froma cellular interface of the participating user device. The programinstructions are stored on the computer readable storage medium forexecution by the CPU via the computer readable memory.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is described in the detailed description whichfollows, in reference to the noted plurality of drawings by way ofnon-limiting examples of exemplary embodiments of the present invention.

FIG. 1 an illustrative environment for implementing the steps inaccordance with aspects of the invention.

FIG. 2 shows an overview of an example implementation in accordance withaspects of the present invention.

FIG. 3 shows a diagram of aggregating bandwidth from multiple cellularconnections in accordance with aspects of the present invention.

FIGS. 4 and 5 show example flowcharts for combining bandwidth frommultiple participating user devices, and implementing a WiFi hotspotwith the combined bandwidth.

DETAILED DESCRIPTION

The present invention generally relates to bandwidth aggregation, andmore particularly, to bandwidth aggregation from multiple cellulardevices. In accordance with aspects of the present invention, anapplication is provided that automatically combines the cellular databandwidth of two or more mobile devices into a single faster “pipe” ofbandwidth that is made available for a WiFi hotspot. Aspects of thepresent invention include an algorithm to enable multiple devices toauto-negotiate the sequencing, labeling, and aggregation of the nodesthat make up the combined bandwidth.

In aspects of the invention, bandwidth from multiple user devices (e.g.,cellular user devices, such as mobile cellular phones that access acellular network) is aggregated, and the aggregated bandwidth is madeavailable to companion devices via a WiFi network implemented by one ofthe multiple user devices. Advantageously, companion devices can connectto a single WiFi network, and have access to an aggregated amount ofnetwork bandwidth provided by multiple user devices. As an illustrativeexample, a group of users, each having their own user devices, mayaggregate the cellular bandwidth from each user device to create a WiFinetwork having the aggregated cellular bandwidth. Companion devices canthen be connected to the WiFi network so that the companion devices haveaccess to a greater amount of bandwidth for collaborative work or otherapplications requiring greater bandwidth than a single cellularconnection could provide. In embodiments, service agreements within anindividual's cellular service provider could impose limitations on howcellular connections are combined, and how much data may be utilized viaa combined cellular connection.

As an example, a group of users may need to use their companion devicesto access an ad hoc WiFi hotspot with greater throughput than any oftheir cellular devices can provide individually. For example, a team ofco-workers may need to connect their laptop PCs or tablets to a localWiFi network for collaborative work, and the team may need that localWiFi network to have high speed Internet access to be shared by all ofthe laptops and tablets. A second example is that a classroom in aremote location may not have access to high speed wired Internet access.The teacher could direct the students to share their bandwidth so thatthe classroom would have access to high bandwidth applications. Asdescribed herein, an auto-negotiation process is implemented in order toaggregate cellular bandwidth from multiple user devices and provide theaggregated bandwidth in a single WiFi network.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowcharts and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowcharts may represent a module, segment, or portion of instructions,which comprises one or more executable instructions for implementing thespecified logical function(s). In some alternative implementations, thefunctions noted in the block may occur out of the order noted in thefigures. For example, two blocks shown in succession may, in fact, beexecuted substantially concurrently, or the blocks may sometimes beexecuted in the reverse order, depending upon the functionalityinvolved. It will also be noted that each block of the flowchartillustrations, and combinations of blocks in the flowchartillustrations, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts or carry outcombinations of special purpose hardware and computer instructions.

Referring now to FIG. 1, a schematic of an example of a computerinfrastructure is shown. Computer infrastructure 10 is only one exampleof a suitable cloud computing node and is not intended to suggest anylimitation as to the scope of use or functionality of embodiments of theinvention described herein. Regardless, computer infrastructure 10 iscapable of being implemented and/or performing any of the functionalityset forth hereinabove.

In computer infrastructure 10 there is a computer system/server 12,which is operational with numerous other general purpose or specialpurpose computing system environments or configurations. Examples ofwell-known computing systems, environments, and/or configurations thatmay be suitable for use with computer system/server 12 include, but arenot limited to, personal computer systems, server computer systems, thinclients, thick clients, hand-held or laptop devices, multiprocessorsystems, microprocessor-based systems, set top boxes, programmableconsumer electronics, network PCs, minicomputer systems, mainframecomputer systems, and distributed cloud computing environments thatinclude any of the above systems or devices, and the like.

Computer system/server 12 may be described in the general context ofcomputer system executable instructions, such as program modules, beingexecuted by a computer system. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes. Computer system/server 12 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed cloud computing environment, program modules may be locatedin both local and remote computer system storage media including memorystorage devices.

As shown in FIG. 1, computer system/server 12 in computer infrastructure10 is shown in the form of a general-purpose computing device. Thecomponents of computer system/server 12 may include, but are not limitedto, one or more processors or processing units 16, a system memory 28,and a bus 18 that couples various system components including systemmemory 28 to processor 16.

Bus 18 represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. By way of example, and not limitation,such architectures include Industry Standard Architecture (ISA) bus,Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnects (PCI) bus.

Computer system/server 12 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 12, and it includes both volatileand non-volatile media, removable and non-removable media.

System memory 28 can include computer system readable media in the formof volatile memory, such as random access memory (RAM) 30 and/or cachememory 32. Computer system/server 12 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 34 can be provided forreading from and writing to a nonremovable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 18 by one or more datamedia interfaces. As will be further depicted and described below,memory 28 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions of embodiments of the invention.

Program/utility 40, having a set (at least one) of program modules 42,may be stored in memory 28 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Program modules 42 generally carry out the functions and/ormethodologies of embodiments of the invention as described herein.

Computer system/server 12 may also communicate with one or more externaldevices 14 such as a keyboard, a pointing device, a display 24, etc.;one or more devices that enable a user to interact with computersystem/server 12; and/or any devices (e.g., network card, modem, etc.)that enable computer system/server 12 to communicate with one or moreother computing devices. Such communication can occur via Input/Output(I/O) interfaces 22. Still yet, computer system/server 12 cancommunicate with one or more networks such as a local area network(LAN), a general wide area network (WAN), and/or a public network (e.g.,the Internet) via network adapter 20. As depicted, network adapter 20communicates with the other components of computer system/server 12 viabus 18. It should be understood that although not shown, other hardwareand/or software components could be used in conjunction with computersystem/server 12. Examples, include, but are not limited to: microcode,device drivers, redundant processing units, external disk drive arrays,RAID systems, tape drives, and data archival storage systems, etc.

FIG. 2 shows an overview of an example implementation in accordance withaspects of the present invention. As shown in FIG. 2, user devices 210(e.g., user devices 210-0, 210-1, and 210-2) may each connect to acellular network, e.g., via a cellular network device 205. The cellularnetwork device 205 may be, for example, an eNodeB (eNB), cellular tower,or the like. Each user device 210-0, 210-1, and 210-2 has access to alimited amount of cellular bandwidth. For example, the amount ofcellular bandwidth may be defined by bearer policies associated with thecellular network, and/or may be limited based on the radio technology ofa cellular radio used to connect to the cellular network device 205. Theexample shown in FIG. 2 and discussed below includes three cellulardevices. Implementations may include any number of cellular devices fromtwo to a much larger number.

As further shown in FIG. 2, the user devices 210-0, 210-1, and 210-2 maybe “daisy chained” to one another in order to aggregate the cellularbandwidth from each user device and create a single WiFi network (alsoreferred to as a WiFi “hotspot” or a “hotspot network”) having theaggregate cellular bandwidth across the user devices 210-0, 210-1, and210-2. Companion devices 215-1, 215-2, and 215-3 may then connect to theWiFi network and have access to the aggregate cellular bandwidth. Forexample, multiple companion devices may simultaneously connect to theWiFi network inside of one parent session. Load balancing may direct thetraffic to the sub-connection that is least utilized at the moment.Alternatively, a single companion device may connect to the WiFinetwork, and the amount of bandwidth available is the sum of thebandwidth of the individual cellular connections. As described herein,each user device 210 may include one more of the components in FIG. 1,to auto-negotiate the connections used to aggregate the cellularbandwidth into a single WiFi network.

Each of user devices 210-0, 210-1, and 210-2 has two input datainterfaces and one output data interface. For example, each user devicehas a cellular interface, and a WiFi input interface. The cellularinterface is used to connect with the cellular network device 205, andthe WiFi input interface is used to scan and connect to a wireless LAN(WLAN), such as a WiFi network. Thus, a user device 210 may have twoinput connections (e.g., a connection with a cellular network and aconnection with a WiFi network). The output data interface (e.g., a“hotspot” interface) is used to create a WiFi network (e.g., a WiFi“hotspot”). The bandwidth of the WiFi hotspot is the sum of thebandwidth of the bandwidth from the two input connections.

In the example of FIG. 2, cellular interfaces for the user devices210-0, 210-1, and 210-2 are denoted as C₀, C₁, and C₂, respectively. TheWiFi input interfaces for user devices 210-0, 210-1, and 210-2 aredenoted as W₀, W₁, and W₂, respectively. The output data interface(i.e., hotspot interface) for the user devices 210-0, 210-1, and 210-2are denoted as H₀, H₁, and H₂, respectively. As previously described,each of the user devices 210-0, 210-1, and 210-2 connect to the cellularnetwork device 205 (e.g., using C₀, C₁, and C₂, respectively).

As shown in FIG. 2, the user device 210-2 is connected to the userdevice 210-1, and the user device 210-1 is connected to the user device210-0. The user device 210-0 hosts an aggregated WiFi network (e.g.,using its hotspot interface H₀). For example, the hotspot interface ofthe user device 210-2 (H2) hosts a WiFi network with which the userdevice 210-1 connects, using a WLAN interface (WiFi interface) of userdevice 210-1 (W1). Similarly, the hotspot interface of the user device210-1 (H1) hosts a WiFi network with which the user device 210-0connects, using the WiFi interface of user device 210-0 (W0). The userdevice 210-0 may host a WiFi hotspot (using H0) that has a bandwidththat is the sum of the bandwidth from the connection of C0 and theconnection of W0 (e.g., the sum of the bandwidth of the connections ofC1 and C2). Thus, the bandwidth of the WiFi network implemented by H0 isthe sum of the bandwidth of the C0, C1, and C2 connections.

FIG. 3 shows a diagram of aggregating bandwidth from multiple cellularconnections in accordance with aspects of the present invention. Asshown in FIG. 3, user device 210-2 has an input cellular connectionusing C2, and hosts a WiFi hotspot using H2. The amount of bandwidthprovided by H2 is equal to the bandwidth of the C2 connection. Userdevice 210-1 has an input cellular connection using C1, and input WiFiconnection using W1. For example, user device 210-1 connects to the WiFihotspot implemented by user device 210-2. The user device 210-1 hosts aWiFi hotspot using H1. The amount of bandwidth provided by H1 is equalto the sum of the bandwidth of the C1 connection, and the bandwidth ofthe W1 connection, which, in this illustrative example, is the bandwidthprovided by the H2 connection, which is the bandwidth provided by the C1connection. Thus, the amount of bandwidth provided by H1 is the sum ofthe bandwidth of the C1 and C2 connections.

User device 210-0 has an input cellular connection using C0, and inputWiFi connection using W0. For example, user device 210-0 connects to theWiFi hotspot implemented by user device 210-1. The user device 210-0hosts a WiFi hotspot using H0. The amount of bandwidth provided by H0 isequal to the bandwidth of the C0 connection, and the bandwidth of the W0connection, which, in this illustrative example, is the bandwidthprovided by the H1 connection, which is the sum of the bandwidthprovided by the C1 connection and C2 connection. Thus, the amount ofbandwidth provided by the H0 connection is the sum of the bandwidthprovided by the C0, C1, and C2 connections. In embodiments, one or morecompanion devices 215 may connect to the hotspot network implemented byuser device 210-0, thereby having the aggregate bandwidth of thecellular connections across user device 210-0, 210-1, and 210-2.

FIGS. 4 and 5 show example flowcharts for combining bandwidth frommultiple participating user devices, and implementing a WiFi hotspotwith the combined bandwidth. The steps of FIGS. 4 and 5 may beimplemented in the environments of FIGS. 1 and 2, for example, and aredescribed using reference numbers of elements depicted in FIGS. 1 and 2.As noted above, the flowchart illustrates the architecture,functionality, and operation of possible implementations of systems,methods, and computer program products according to various embodimentsof the present invention.

At step 405, a shared character string is appended to the network nameof a user device 210. For example, the shared character string isappended when the user device 210 receives an instruction from a user ofuser device 210 to combine cellular connections from multiple otherparticipating user devices 210, and host a WiFi hotspot with whichcompanion devices may connect. In embodiments, the user device 210 mayreceive this instruction via a user interface associated with aconnection aggregation application used to facilitate the aggregation ofmultiple cellular connections. This connection aggregation applicationmay be used to permit other user devices 210 to have their cellularconnections aggregated.

As an illustrative example, users of three user devices 210 (e.g., userdevice 210-0, user device 210-1, and user device 210-2) may open theapplication and select to participate in a cellular connectionaggregation network. One of the user devices 210 may be designated asthe “master” user device 210 that hosts a hotspot having the bandwidthof aggregated cellular connections across the user device 210-0, userdevice 210-1, and user device 210-2. In this example, assume that theuser device 210-0 is the “master” user device, and the user devices210-1 and user device 210-2 are participating user devices. Theparticipating user devices may receive instructions from theirrespective users (e.g., via the application) to combine cellularconnections and with the master user device. For example, theparticipating user devices may input or select a network name of themaster user device. The steps of FIG. 4 may be performed by the masteruser device as opposed to the participating user devices.

In embodiments, user device 210-0 may append a shared character stringto the network name of user device 210-0 to indicate that user device210-0 is sharing its cellular connection for aggregation. Also, userdevices 210-1 and user devices 210-2 may append a shared characterstring to their network names. As an example, if the network name forthe user device 210-0 is currently “User A's Phone” the user device210-0 may append the shared character string “Shared_cell” thus updatingthe network name of user device 210-0 to “User A's Phone_Shared_cell”.

In embodiments, the shared character string may be a random string ofcharacters or a custom string of characters that is then sharedprivately among participating user devices 210. For example, theconnection aggregation application may be used to permit a user tocustomize the shared character string, or randomly generate a sharedcharacter string. Once a character string has been selected (either acustomized or randomly generated string), the connection aggregationapplication running on the master user device 210 may privately transmitinformation identifying the shared character string to the participatinguser devices 210. For example, the master user device 210 may send atext message with the shared character string to the participating userdevices 210, and the connection aggregation application may use anapplication programming interface (API) to access the text message. Forexample, the connection aggregation application of the participatinguser devices 210 may access text messages sent by the contentaggregation application of the master user device 210. Alternatively,the shared character string may be privately communicated between themaster user device 210 the participating user devices 210 using someother technique. For example, users may manually enter a sharedcharacter string that the users have mutually selected. The sharedcharacter string may be custom or random so that other user devices 210may not be accidentally construed as participating user devices 210.

At step 410, the user device 210-0 activates its hotspot interface tocreate a WiFi network. The name of the WiFi network is the updatednetwork name of the user device 210-0 (e.g., “User A'sPhone_Shared_cell”). Other participating user devices 210-1 and 210-2may also create WiFi networks with network names having the sharedcharacter strings.

At step 415, the user device 210-0 scans for WLANs (WiFi networks) usingits WiFi interface. At step 420, the user device 210-0 generates a listof WiFi networks with names having the appended shared character string(e.g., WiFi networks hosted by the other participating user devices210-1 and 210-2).

At step 425, the user device 210-0 appends a sequence character stringafter the shared character string to its client network name. Forexample, the user device 210-0 may append the sequence character string“_0” thereby updating the client network name of the user device 210-0to “User A's Phone_Shared_cell_0”. The sequence character indicates thatuser device 210-0 will share its bandwidth when it connects to a WiFinetwork hosted by a participating user device 210.

At step 430, the user device 210-0 connects to a particular WiFi networkhaving the shared character string. For example, the user device 210-0may connect to one of the WiFi networks in the list of WiFi networksgenerated at step 420. In embodiments, the user device 210-0 may use anynumber of selection techniques to select a particular one of the WiFinetworks with which to connect. For example, the user device 210-0 mayrandomly select one of the WiFi networks, or may select the WiFi networkhaving the strongest signal. The user device 210-0 may connect to theWiFi network using its WiFi interface, and using its client network namethat includes the shared character string and the sequence characterstring.

At step 435, the user device 210-0 may combine the bandwidth from theWiFi interface with the bandwidth from the cellular interface, andprovide the bandwidth via the hotspot interface. For example, the userdevice 210-0 may combine the bandwidth using any number of conventionalbandwidth aggregation and load balancing techniques. As a result, theWiFi hotspot created by the user device 210-0 combines the bandwidthfrom multiple cellular connections, and companion devices 215 mayconnect to the WiFi hotspot to utilize the combined or aggregatedbandwidth.

FIG. 5 shows an example flowchart for auto-negotiating connections forbandwidth aggregation between participating user devices. The steps ofFIG. 5 may be performed by a participating user device 210 as opposed tobeing performed by a master user device 210. As an example, aparticipating user device 210-1 may perform the steps of FIG. 5.

At step 505, the user device 210-1 appends a shared character string tothe network name of the user device 210-1 (e.g., in a similar manner asdescribed above with respect to step 405 of FIG. 4). For example, assumethat the shared character string is “_Shared_cell” and that the networkname is “User B's cell phone”. As a result, the updated network name ofuser device 210-1 is “User B's cell phone_Shared_cell”.

At step 510, the user device 210-1 activates its hotspot interface(e.g., to host a WiFi network). The name of the WiFi network is theupdated network name generated at step 505 (e.g., “User B's cellphone_Shared_cell”). At step 515, the user device 210-0 may connect as aclient to the user device 210-1 whose network name has the sharedcharacter string. The user device 210-0 connects using an appendedsequence character string to the WiFi network hosted by user device210-1. In this example, the user device 210-1 may connect the userdevice 210 whose client network name is “_Shared_cell_0” (e.g., userdevice 210-0). That is, user device 210-0 may connect to the WiFinetwork hosted by user device 210-1. For a subsequent connection, userdevice 210-1 may connect to a WiFi network hosted by user device 210-2,and so on.

At step 520, the user device 210-1 may disconnect all devices except forthe user device 210 whose network name has the current sequencecharacter string from the WiFi network implemented by user device 210-1.This is performed to prevent other devices from utilizing bandwidthprovided by the hotspot interface of user device 210-1.

At step 525, the user device 210-1 may set a flag to refuse additionalconnections to its hotspot interface (e.g., to the WiFi networkimplemented to by the user device 210-1). This is performed to preventother devices from utilizing bandwidth provided by the hotspot interfaceof user device 210-1.

At step 530, the user device 210-1 may increment the sequence characterstring (e.g., of user device 210-0). In this example, the sequencecharacter string is incremented to “_1”. At step 535, the incrementedcharacter string is appended after the shared character string of theclient network name of the user device 210-1. In this example, theupdated client network name of user device 210-1 is “User B's cellphone_Shared_cell_1”.

At step 535, the user device 210-1 appends an incremented sequencecharacter string after the shared character string to the client networkname of the user device.

At step 540, the user device 210-1 may scan for WiFi networks. At step545, the user device 210-1 generates a list of available WiFi networkswith appended shared character strings that are not the master device.

At step 550, the user device 210-1 may connect to a particular WiFinetwork having a network name with the shared character string that isnot the master device. For example, the user device 210-0 may connect toone of the WiFi networks in the list of WiFi networks generated at step545. As described above with respect to step 430 of FIG. 4, the userdevice 210-1 may use any number of selection techniques to select aparticular one of the WiFi networks with which to connect. For example,the user device 210-1 may randomly select one of the WiFi networks, ormay select the WiFi network having the strongest signal. The user device210-1 may connect to the WiFi network using its WiFi interface.

At step 555, the user device 210-1 may combine the bandwidth from itsWiFi interface with the bandwidth from its cellular interface, andprovide the combined bandwidth via the hotspot interface. For example,the user device 210-1 may combine the bandwidth using any number ofconventional bandwidth aggregation and load balancing techniques. As aresult, the WiFi hotspot created by the user device 210-1 combines thebandwidth from multiple interfaces, and provides the combined bandwidthtowards a master user device 210.

The process of FIG. 5 may be repeated for any number of participatinguser devices 210. As a result, multiple user devices 210 may be “daisychained” via their respective WiFi and hotspot interfaces, and thecellular connections are aggregated across all participating userdevices 210. Further, the connections between multiple user devices 210are automatically negotiated in accordance with the processes of FIGS. 4and 5.

In embodiments, a service provider, such as a Solution Integrator, couldoffer to perform the processes described herein. In this case, theservice provider can create, maintain, deploy, support, etc., thecomputer infrastructure that performs the process steps of the inventionfor one or more customers. These customers may be, for example, anybusiness that uses technology. In return, the service provider canreceive payment from the customer(s) under a subscription and/or feeagreement and/or the service provider can receive payment from the saleof advertising content to one or more third parties.

In still additional embodiments, the invention provides acomputer-implemented method for aggregating cellular connections, via anetwork. In this case, a computer infrastructure, such as computersystem 12 (FIG. 1), can be provided and one or more systems forperforming the processes of the invention can be obtained (e.g.,created, purchased, used, modified, etc.) and deployed to the computerinfrastructure. To this extent, the deployment of a system can compriseone or more of: (1) installing program code on a computing device, suchas computer system 12 (as shown in FIG. 1), from a computer-readablemedium; (2) adding one or more computing devices to the computerinfrastructure; and (3) incorporating and/or modifying one or moreexisting systems of the computer infrastructure to enable the computerinfrastructure to perform the processes of the invention.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computer-implemented method comprising:receiving, by a user device connected to a cellular network via acellular interface of the user device, an instruction to aggregatecellular bandwidth of the user device with the cellular bandwidth of oneor more user devices; appending, by the user device, a shared characterstring to a network name of the user device based on the receiving theinstruction to aggregate cellular bandwidth; combining, by the userdevice, bandwidth from the cellular interface of the user device withbandwidth from a wireless network interface of the user device; hosting,by the user device, a wireless network providing a sum of the bandwidthfrom the wireless network interface and the cellular interface; allowinga connection from a particular one of the one or more user devices,wherein the particular user device uses a client network name includingthe shared character string and a sequence character string; receiving,by the user device, an instruction to disconnect from a wireless networkof one of the user devices; and refusing additional conditions to thewireless network hosted by the user device based on disconnecting ofdevices from the wireless network except for the particular user device;generating a list of available wireless networks with network nameshaving the shared character string, incrementing the sequence characterstring and appending the incremented sequence character string to theshared character string to create a client network name for the userdevice; and connecting to a particular one of the available wirelessnetworks using the client network name.
 2. The method of claim 1,further comprising receiving the shared character string from theparticular one of the one or more user devices, wherein appending theshared character string is based on receiving the shared characterstring.
 3. The method of claim 1, further comprising setting a flag torefuse the additional connections to the wireless network interface. 4.The method of claim 1, further comprising selecting a wireless networkof one of the user devices based on signal strength associated with thewireless network of one of the user devices, wherein connecting to theparticular one of the available wireless networks using the clientnetwork name includes selecting the particular one of the availablewireless networks using the client network name.
 5. The method of claim1, further comprising randomly selecting the wireless network of one ofthe user devices, wherein connecting to the particular one of theavailable wireless includes randomly selecting the particular one of theavailable wireless networks using the client network name.
 6. The methodof claim 1, wherein steps of claim 1 are provided by a service provideron a subscription, advertising, and/or fee basis.
 7. The method of claim1, further comprising deploying a system for aggregating bandwidth froma plurality of cellular connections, comprising providing a computerinfrastructure operable to perform the steps of claim
 1. 8. The methodof claim 1, further comprising connecting to the one or more userdevices via the wireless network hosted by the user device.
 9. Themethod of claim 8, wherein the wireless network hosted by the userdevice provides a sum of the bandwidth from cellular interfaces of eachof the one or more user devices.
 10. A computer program product foraggregating bandwidth from a plurality of cellular connections, thecomputer program product comprising a computer readable storage mediumhaving program instructions embodied therewith, the program instructionsexecutable by a user device to cause the user device to: receive aninstruction to aggregate cellular bandwidth of the user device with thecellular bandwidth of one or more user devices; append a sharedcharacter string to a network name of the user device based on thereceiving the instruction to aggregate cellular bandwidth; host awireless network after receiving the instruction to aggregate; allow aconnection from a particular one of the one or more user devices,wherein the particular user device uses a client network name includingthe shared character string and a sequence character string; generate alist of available wireless networks with network names having a sharedcharacter string; increment the sequence character string and append theincremented sequence character string to the shared character string tocreate a client network name for the user device; connect to aparticular one of the available wireless networks using the clientnetwork name over a wireless network interface of the user device;combine bandwidth from a cellular interface of the user device withbandwidth from the wireless network interface, wherein the wirelessnetwork hosted by the user device provides a sum of the bandwidth fromthe wireless network interface and the cellular interface; disconnectfrom a particular wireless network based on receiving an instruction todisconnect from the particular wireless network; refuse additionalconditions to the wireless network hosted by the user device based ondisconnecting of devices from the wireless network except for theparticular user device.
 11. The computer program product of claim 10,wherein the program instructions further cause the user device todisconnect the devices from the wireless network except for theparticular one of the one or more user devices having a network namewith the shared character string and a current sequence characterstring.
 12. The computer program product of claim 11, wherein theprogram instructions further cause the user device to receive the sharedcharacter string from the particular one of the one or more userdevices.
 13. The computer program product of claim 10, wherein theinstruction to aggregate the cellular bandwidth is received via aconnection aggregation application associated with a master user deviceof the one or more user devices.
 14. The computer program product ofclaim 10, wherein the program instructions further cause the user deviceto select the particular wireless network based on signal strengthassociated with the particular wireless network, wherein the connectingto the particular wireless network includes selecting the particularwireless network.
 15. The computer program product of claim 10, whereinthe program instructions further cause the user device to randomlyselect the particular wireless network, wherein connecting to theparticular wireless network includes randomly selecting the particularwireless network.
 16. A system comprising: a user device comprising aCPU, a computer readable memory and a computer readable storage mediumassociated with a computing device; program instructions to receive aninstruction to aggregate cellular bandwidth of the user device with thecellular bandwidth of a user device; program instructions to append ashared character string to a network name of the user device based onthe receiving the instruction to aggregate cellular bandwidth; programinstructions to combine bandwidth from a cellular interface of the userdevice with bandwidth from a wireless network interface of the userdevice; program instructions to host a wireless network; programinstructions to allow a connection from a particular one of one or moreuser devices, wherein the particular user device uses a client networkname including the shared character string and a sequence characterstring, the hosted wireless network; program instructions to generate alist of available wireless networks with network names having a sharedcharacter string; program instructions to increment the sequencecharacter string and append the incremented sequence character string tothe shared character string to create a client network name for the userdevice; program instructions to connect to a particular one of theavailable wireless networks using the client network name over awireless network interface of the user device; program instructions toprovide a sum of the bandwidth from the wireless network interface andthe cellular interface, wherein the bandwidth from the wireless networkinterface includes the bandwidth from a cellular interface of the userdevice; program instructions to disconnect from a wireless network ofthe user device based on receiving an instruction to disconnect from thewireless network of the user device; program instructions to refuseadditional conditions to the wireless network hosted by the user devicebased on disconnecting of devices from the wireless network except forthe particular user device wherein the program instructions are storedon the computer readable storage medium for execution by the CPU via thecomputer readable memory.